"""
给定一棵二叉树，你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。
          1
         / \
        2   3
       / \
      4   5

直径左右最大深度之和，l+r 递归计算
"""

class Solution:
    def diameterOfBinaryTree(self, root):
        """
        :type root: TreeNode
        :rtype: int
        """
        self.maxv = 0
        def maxdeep(head):
            if not head: return 0
            left = maxdeep(head.left)
            right = maxdeep(head.right)
            self.maxv = max(self.maxv, left+right)
            return max(left,right)+1
        maxdeep(root)
        return self.maxv